
let first = new Promise( (resolve,reject) => {
    // 随机生成 [ 0 , 1000 ) 之间的整数
    let rand = ( Math.random() * 1000 ) | 0 ;
    // 在延迟 2000 毫秒 之后调用 resolve 函数并为 resolve 传递参数(rand)
    setTimeout( resolve , 2000 , rand );
});

let second = new Promise( (resolve,reject) => {
    // 随机生成 boolean 值 ( true 、false )
    let rand = Math.random() > 0.5 ;
    // 在延迟 3000 毫秒 之后调用 resolve 函数 完成"兑现"操作[并为 resolve 传递参数(rand)]
    setTimeout( resolve , 3000 , rand );
    
    // 在延迟 3000 毫秒 之后调用 reject 函数 完成" 拒绝"操作[并为 reject 传递参数(reason)]
    //setTimeout( reject , 3000 , '你是个好人' );
});

let arr = [ first , second ];

// Promise.all() 方法接收一个promise的iterable类型的输入，并且只返回一个Promise实例
// 这里的 iterable 类型可以是 Array 、Map 、Set 等
let promise = Promise.all( arr );
console.log( promise );

// 那个输入的所有promise的resolve回调的结果是一个数组
promise.then( values => {
    console.log( promise );
    values.forEach( res => {
        console.log( res );
    });
}).catch( reason => {
    console.log( promise );
    console.log( reason );
});